From 3b636cbeb99f23214aec8e26c194d2998ebb9da2 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 12 Jun 2014 15:17:47 +0200 Subject: [PATCH] scrolledwindow: Deny scrolling sequences if pressed on the scrollbars Scrollbars might be a bit too narrow for touch (and generally less useful besides kinetic scrolling), but those should be functional nevertheless. --- gtk/gtkscrolledwindow.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index 66c9de6958..87d3008807 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -578,20 +578,26 @@ scrolled_window_drag_begin_cb (GtkScrolledWindow *scrolled_window, GtkScrolledWindowPrivate *priv = scrolled_window->priv; GtkEventSequenceState state; GdkEventSequence *sequence; + GtkWidget *event_widget; + const GdkEvent *event; priv->in_drag = FALSE; priv->drag_start_x = priv->unclamped_hadj_value; priv->drag_start_y = priv->unclamped_vadj_value; gtk_scrolled_window_cancel_deceleration (scrolled_window); + sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture)); + event = gtk_gesture_get_last_event (gesture, sequence); + event_widget = gtk_get_event_widget ((GdkEvent *) event); - if (!priv->hscrollbar_visible && !priv->vscrollbar_visible) + if (event_widget == priv->vscrollbar || + event_widget == priv->hscrollbar || + (!priv->hscrollbar_visible && !priv->vscrollbar_visible)) state = GTK_EVENT_SEQUENCE_DENIED; else if (priv->capture_button_press) state = GTK_EVENT_SEQUENCE_CLAIMED; else return; - sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture)); gtk_gesture_set_sequence_state (gesture, sequence, state); } -- 2.30.2